package com.zg.invoice.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;

@Data
@ApiModel(value = "发票信息", description = "发票信息对象")
public class JsInvoiceOpenTaskVo implements Serializable {
    /**
     *
     */
    @ApiModelProperty(value = "主键id")
    private Long id;

    /**
     * 结算单号
     */
    @ApiModelProperty(value = "结算单号")
    private String settlementNo;

    /**
     * 发票类型 1专票,2普票,3电票,4数电纸票
     */
    @ApiModelProperty(value = "发票类型")
    private Long invoiceType;

    /**
     * 发票状态:10.正常20.已被红冲.30.已被作废
     */
    @ApiModelProperty(value = "发票状态")
    private Long invoiceStatus;

    /**
     * 开票类型 0 正数 1 红冲
     */
    @ApiModelProperty(value = "开票类型")
    private Long billingType;

    /**
     * 打印状态 0:未打印.1:已打印
     */
    @ApiModelProperty(value = "打印状态")
    private Long printStatus;

    /**
     * 发票代码
     */
    @ApiModelProperty(value = "发票代码")
    private String invoiceCode;

    /**
     * 发票号码

     */
    @ApiModelProperty(value = "发票号码")
    private String invoiceNo;

    /**
     * 销方名称
     */
    @ApiModelProperty(value = "销方名称")
    private String sellerName;

    /**
     * 销方税号
     */
    @ApiModelProperty(value = "销方税号")
    private String sellerTaxNo;

    /**
     * 销方地址
     */
    @ApiModelProperty(value = "销方地址")
    private String sellerAddress;

    /**
     * 销方电话
     */
    @ApiModelProperty(value = "销方电话")
    private String sellerTel;

    /**
     * 销方银行名称
     */
    @ApiModelProperty(value = "销方银行名称")
    private String sellerBankName;

    /**
     * 销方银行账号
     */
    @ApiModelProperty(value = "销方银行账号")
    private String sellerBankAccount;

    /**
     * 购方名称
     */
    @ApiModelProperty(value = "购方名称")
    private String purchaserName;

    /**
     * 购方税号
     */
    @ApiModelProperty(value = "购方税号")
    private String purchaserTaxNo;

    /**
     * 购方地址
     */
    @ApiModelProperty(value = "购方地址")
    private String purchaserAddress;

    /**
     * 购方电话
     */
    @ApiModelProperty(value = "购方电话")
    private String purchaserTel;

    /**
     * 购方银行名称
     */
    @ApiModelProperty(value = "购方银行名称")
    private String purchaserBankName;

    /**
     * 购方银行账号
     */
    @ApiModelProperty(value = "购方银行账号")
    private String purchaserBankAccount;

    /**
     * 购方代码
     */
    @ApiModelProperty(value = "购方代码")
    private String purchaserCode;

    /**
     * 购方邮箱
     */
    @ApiModelProperty(value = "购方邮箱")
    private String purchaserEmail;

    /**
     * 收款人
     */
    @ApiModelProperty(value = "收款人")
    private String payee;

    /**
     * 复核人
     */
    @ApiModelProperty(value = "复核人")
    private String reviewer;

    /**
     * 开票人
     */
    @ApiModelProperty(value = "开票人")
    private String drawer;

    /**
     * 机器编码
     */
    @ApiModelProperty(value = "机器编码")
    private String machineCode;

    /**
     * 开票机号
     */
    @ApiModelProperty(value = "开票机号")
    private String machineNo;

    /**
     * 不含税金额
     */
    @ApiModelProperty(value = "不含税金额")
    private BigDecimal amount;

    /**
     * 含税金额
     */
    @ApiModelProperty(value = "含税金额")
    private String amountWithTax;

    /**
     * 税额
     */
    @ApiModelProperty(value = "税额")
    private String taxAmount;

    /**
     * 校验码
     */
    @ApiModelProperty(value = "校验码")
    private String checkCode;

    /**
     * 开票日期
     */
    @ApiModelProperty(value = "开票日期")
    private Date drewDate;

    /**
     * 通知单编号
     */
    @ApiModelProperty(value = "通知单编号")
    private String redApplicationNo;

    /**
     * 税控码
     */
    @ApiModelProperty(value = "税控码")
    private String taxCode;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 密文
     */
    @ApiModelProperty(value = "密文")
    private String ciphertext;

    /**
     * 0 预制发票 1 订单开票 2 发票填开 3 发票修复
     */
    @ApiModelProperty(value = "0 预制发票 1 订单开票 2 发票填开 3 发票修复")
    private Long invoiceSourceModule;

    /**
     * 清单标识 0 非清单 1 清 单
     */
    @ApiModelProperty(value = "清单标识 0 非清单 1 清 单")
    private Long listFlag;

    /**
     * 0 自取 1 物流
     */
    @ApiModelProperty(value = "0 自取 1 物流")
    private Long logisticsFlag;

    /**
     * 税率
     */
    @ApiModelProperty(value = "税率")
    private String taxRate;

    /**
     * 作废理由
     */
    @ApiModelProperty(value = "作废理由")
    private String cancelReason;

    /**
     * 作废日期
     */
    @ApiModelProperty(value = "作废日期")
    private Date cancelTime;

    /**
     * 电票url
     */
    @ApiModelProperty(value = "电票url")
    private String pdfUrl;

    /**
     * 电票预览地址
     */
    @ApiModelProperty(value = "电票预览地址")
    private String viewUrl;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    private Timestamp createTime;

    /**
     * 修改时间
     */
    @ApiModelProperty(value = "修改时间")
    private Timestamp updateTime;

    /**
     * 发票状态（0：开票中，1：开票完成，2：开票失败）
     */
    @ApiModelProperty(value = "发票状态（0：开票中，1：开票完成，2：开票失败）")
    private Long status;

    /**
     * 订单号:由结算系统生成唯一编号
     */
    @ApiModelProperty(value = "订单号:由业务系统生成唯一编号")
    private String externalDocumentNo;

    /**
     * 开票系统1-诺税通，2-乐企
     */
    @ApiModelProperty(value = "开票系统1-诺税通，2-乐企")
    private String invoiceSystem;
    /**
     * 关联上级发票号码
     */
    @ApiModelProperty(value = "关联上级发票号码")
    private String parentInvoiceNo;

    /**
     * 来源系统
     */
    @ApiModelProperty(value = "来源系统")
    private String sourceSystem;

    /**
     * 来源系统回调地址
     */
    @ApiModelProperty(value = "来源系统回调地址")
    private String  sourceCallbackUrl;
    /**
     * 明细
     */
    @ApiModelProperty(value = "明细")
    private List<JsInvoiceOpenDetailVo> details;
}
